/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：UICompositeTextTextBoxOrDataListButton.js<br>
 * 日期：2016年9月14日<br>
 * 作者: 杨顺强<br>
 * 功能: 该组件有三部分组成 文字描述、textbox(或者dataList)两种组件中的一种 一个button组件组成
 * 		button完成对textbox(或者dataList)中内容的控制
 * 		
 * 		无需向外提供数据，自行完成对应的业务逻辑
 * <br>
 * 
 * 修改记录：<br>
 * 日期 描述 更新功能<br>
 ******************************************************************************/
window.makeNamespace(window,"Rainier.UI.V2");

/**
 * 函数名称：Rainier.UI.V2.UICompositeTextTextBoxOrDataListButton<br>
 * 函数功能：有三个组件组成的新组件，Text组件。textBox组件或者dataList组件（二选一）。button组件（可选）<br>
 * 参数输入：<br>
 * 异常信息：<br>
 */
Rainier.UI.V2.UICompositeTextTextBoxOrDataListButton = Rainier.UI.V2.UIComposite.extend({
	
	NAME : "Rainier.UI.V2.UICompositeTextTextBoxOrDataListButton",
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeTextTextBoxOrDataListButton.init<br>
	 * 函数功能：有三个组件组成的新组件，Text组件。textBox组件或者dataList组件（二选一）。button组件（可选）<br>
	 * 参数输入：objParentComposite : UIComposite 父组件对象<br>
	 * 参数输入：objProperties:  格式按照如下方式填写
	 * {
	 * 	  optionName  : "",		//标识当前参数		必写
	 *    text			:
	 *    {						//（必选）
	 *   		style:"",		//在text的样式，控制style的位置					
	 *   		text :"",		//该text的内容。
	 *    },
	 * 	  textbox	  : {},		//组件,可以是对应的textbox，也可以是对应的dataList组件（二选一）
	 * 	  button	  : {}		//按钮组件，控制当前组件中textbox或者dataList中的数据是否显示（可选）
	 * }<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	init : function(objParentComposite,objProperties){
		if(objProperties.optionName){
			this.optionName = objProperties.optionName;
		}else{
			throw new Error("该组件的optionName为必设项,请修改对象参数信息");
		}
		if(objProperties.text){
			this.textPro = objProperties.text;
		}
		else{
			throw new Error("text未赋值，请重新填写参数");
		}
		for(var option in objProperties){
			if(option === "textbox"){
				this.textboxProperties = objProperties[option];
			}
			if(option === "dataList"){
				this.dataListProperties = objProperties[option];
			}
		}
		if(objProperties.button){
			this.buttonProperties = objProperties.button;
		}
		this.textBox = null;
		this.dataList = null;
		this.button = null;
		this._super(objParentComposite,objProperties);
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeTextTextBoxOrDataListButton.createComposite<br>
	 * 函数功能：组件创建函数，完成对组件的创建工作<br>
	 * 参数输入：eleParent ： 父节点Tag<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	createComposite : function(eleParent){
		this._super(eleParent);
		var newEle = this.CreateElement("div",this.m_objProperties.id,null,{style:"margin-left:10px;margin-top:5px;float:left"});
		eleParent.append(newEle);
		var _this = this;
		//添加组件内容
		this.text	 = new Rainier.UI.V2.UICompositeText(this,this.textPro);
		if(this.textboxProperties){
			this.textBox = new Rainier.UI.V2.UICompositeTextBox(this,this.textboxProperties);
		}
		if(this.dataListProperties){
			this.dataList = new Rainier.UI.V2.UICompositeDataList(this,this.dataListProperties);
			this.dataList.getElement().parent().parent().parent().before($("<br><br>"));
		}
		if(this.buttonProperties){
			this.button = new Rainier.UI.V2.UICompositeLinkButton(this,this.buttonProperties);
		}
		if(this.textBox && this.button){			
			this.button.getElement().before($("<span>&nbsp;<span>"));
		}
		//todos 完成button监听事件功能
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICo mpositeTextTextBoxOrDataListButton.getOptionName<br>
	 * 函数功能：获取当前组件的参数名字<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：获取当前组件的参数名字 string<br>
	 * 异常信息：无<br>
	 */
	getOptionName : function(){
		return this.optionName;
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeTextTextBoxOrDataListButton.getOptionName<br>
	 * 函数功能：获取当前组件中的子组件对象。textbox<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：textbox ,子组件对象<br>
	 * 异常信息：无<br>
	 */
	getTextBox : function(){
		if(this.textBox){			
			return this.textBox;
		}
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeTextTextBoxOrDataListButton.getDataList<br>
	 * 函数功能：获取当前组件中的子组件对象。dataList<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：dataList ,子组件对象<br>
	 * 异常信息：无<br>
	 */
	getDataList : function(){
		if(this.dataList){			
			return this.dataList;
		}
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeTextTextBoxOrDataListButton.getButtton<br>
	 * 函数功能：获取当前组件中的子组件对象。button<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：button,子组件对象<br>
	 * 异常信息：无<br>
	 */
	getButton : function(){
		if(this.button){
			return this.button;
		}
	},
	
	/**
	 * 函数名称：<br>
	 * 函数功能：<br>
	 * 参数输入：<br>
	 * 参数输出：<br>
	 * 函数返回：<br>
	 * 异常信息：<br>
	 */
	getComponentValue : function(){
		
	},
	
	/**
	 * 函数名称：<br>
	 * 函数功能：<br>
	 * 参数输入：<br>
	 * 参数输出：<br>
	 * 函数返回：<br>
	 * 异常信息：<br>
	 */
	setComponentValue : function(){
		
	},
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeTextTextBoxOrDataListButton.getButtton<br>
	 * 函数功能：从数据列表删除一个数据<br>
	 * 参数输入：data : {index:0,value:'变量名称'}<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	removeItem : function(data){
		var index = this.dataListProperties.data.indexOf(data);
		console.log(this.dataListProperties.data);
		if( index >= 0){
			this.dataListProperties.data.splice(index,1);
			this.dataList.loadData(this.dataListProperties.data);	
		} 
	}
});
